#include "intrins.h"
#include "STC8G.h"
#include "User.h"
#include "header.h"
#include "Key.h"

extern  KEY_T s_KEY[6];

/**
 * @brief 三色LED点亮
 *
 * @param LED
 */
void LED_ON(u8 LED)
{


    switch (LED)
    {
    case LED_COLOR_RED:
        OUT_LED_RED = 0;
        OUT_LED_GREEN = 1;
        break;
    case LED_COLOR_GREEN:
        OUT_LED_RED = 1;
        OUT_LED_GREEN = 0;
        break;
    default:
        OUT_LED_RED = 1;
        OUT_LED_GREEN = 1;
        break;
    }
}


/**
 * @brief 红外瞄准处理

 *
 * @param powerlevel
 */
void IR_Aim_Handler(u8 powerlevel) {


    switch (powerlevel)
    {
    case LEVEL_AIM_OFF:
        PCA_PWM1 = 0x43;
        CCAP1H = 0xFF;
        break;
    case LEVEL_AIM_LOW:
        PCA_PWM1 = 0x40;
        CCAP1H = PWM_AIM_LOW;
        break;
    case LEVEL_AIM_MID:
        PCA_PWM1 = 0x40;
        CCAP1H = PWM_AIM_MID;
        break;
    case LEVEL_AIM_HIGH:
        PCA_PWM1 = 0x40;
        CCAP1H = PWM_AIM_HIGH;
        break;
    default:
        PCA_PWM1 = 0x43;
        CCAP1H = 0xFF;
        break;
    }

}

/**
 * @brief 红外照明处理

 *
 * @param powerlevel 照明等级

 */
void IR_Ill_Handler(u8 powerlevel) {
    // PCA_PWM0 = 0x40;
    // CCAP0H = PWM_ILL_LOW;
    switch (powerlevel)
    {
    case LEVEL_ILL_OFF:
        PCA_PWM0 = 0x43;
        CCAP0H = 0xFF;
        break;
    case LEVEL_ILL_LOW:
        PCA_PWM0 = 0x40;
        CCAP0H = PWM_ILL_LOW;
        break;
    case LEVEL_ILL_MID:
        PCA_PWM0 = 0x40;
        CCAP0H = PWM_ILL_MID;
        break;
    case LEVEL_ILL_HIGH:
        PCA_PWM0 = 0x40;
        CCAP0H = PWM_ILL_HIGH;
        break;
    default:
        PCA_PWM0 = 0x43;
        CCAP0H = 0xFF;
        break;
    }

}
void Green_Aim_Handler(u8 greenEnable) {

    if (greenEnable) {
        OUT_GR_AIM = 0;
    }
    else
    {
        OUT_GR_AIM = 1;
    }

}

/**
 * @brief 激光更新处理 100ms执行一次

 *
 */
void LasersUpdate_Handler(void) {
    Green_Aim_Handler(State_GreenAim);
    IR_Aim_Handler(State_IRAim);
    IR_Ill_Handler(State_IRILL);
    // 红外灯亮的
    if (State_IRAim || State_IRILL)
    {
        LED_Flashing(LED_COLOR_RED, 0);

    }
    // 绿激光亮的
    else if (State_GreenAim) {
        if (State_LED == LED_COLOR_GREEN) {
            LED_Flashing(LED_COLOR_GREEN, 0);
        }
        else {
            LED_Flashing(LED_COLOR_GREEN, State_LED);

        }
    }
    // 照明和瞄准都关了, 指示灯常亮
    else
    {
        LED_ON(State_LED);
        // if (s_KEY[0].State != 0) {
        //     tcountForSleep==0;

        // }
        tcountForSleep++;

    }
}

/**
 * @brief LED闪烁处理 10ms执行一次(在LasersUpdate_Handler中执行)
 *
 * @param color1 闪烁颜色1
 * @param color2 闪烁颜色2
 * @param timeCount 时间存储/100ms
 */
void LED_Flashing(u8 color1, u8 color2) {
    tcountForLED++;
    if (tcountForLED <= 10) {

        LED_ON(color1);
    }
    else if (tcountForLED <= 20) {
        LED_ON(color2);
    }
    else {
        tcountForLED = 0;
    }


}

void StateUpdate(void) {
    // 鼠尾按键2,绿激光优先
    if (s_KEY[2].State || State_GreenLatched) {
        State_GreenAim = 1;
        State_IRAim = 0;
        State_IRILL = 0;
    }

    // // 绿激瞄准光档
    else if ((CurrentSelectorAim == LEVEL_AIM_GREEN) && (CurrentSelectorIll == LEVEL_ILL_OFF))
    {

        State_LED = LED_COLOR_GREEN;
        // LED_ON(State_LED);
        State_GreenAim = s_KEY[1].State || s_KEY[3].State || State_LightingLatched;
        State_IRAim = 0;
        State_IRILL = 0;

    }
    // 都在OFF档
    else if ((CurrentSelectorAim == LEVEL_AIM_OFF) && (CurrentSelectorIll == LEVEL_ILL_OFF)) {
        State_LED = 0;
        State_GreenAim = 0;
        State_IRAim = 0;
        State_IRILL = 0;
        State_LightingLatched = 0;
        State_GreenLatched = 0;
    }
    // 在红外档位
    else {
        State_LED = LED_COLOR_RED;
        State_GreenAim = 0;
        // 点动或锁定
        if (s_KEY[1].State || s_KEY[3].State || State_LightingLatched) {
            State_IRAim = CurrentSelectorAim;
            if ((switch_1 == 0xff) && (CurrentSelectorIll > 0)) {
                State_IRILL = LEVEL_ILL_LOW;

            }
            else {
                State_IRILL = CurrentSelectorIll;
            }
        }
        else {
            State_IRAim = 0;
            State_IRILL = 0;
        }

    }
}








// /*==================================================================
// //********	程序名称：JGM_OFF()
// //********	程序功能：激光瞄PWM输出 关闭
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-21
// ==================================================================*/
// void	JGM_OFF()
// {
//  	PCA_PWM1	=0x83;			// 关闭 激光瞄PWM输出
// 	CCAP1H		=0Xff;
// 	CCAP1L		=0Xff;					
// }
// /*==================================================================
// //********	程序名称：JGM_D()
// //********	程序功能：激光瞄PWM输出 低
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-21
// ==================================================================*/
// void	JGM_D()
// {
//  	PCA_PWM1	=0x80;				
// 	CCAP1H		=JGM_OUT_L;	// 激光瞄PWM 低				
// }
// /*==================================================================
// //********	程序名称：JGM_Z()
// //********	程序功能：激光瞄PWM输出 中
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-21
// ==================================================================*/
// void	JGM_Z()
// {
//  	PCA_PWM1	=0x80;				
// 	if(switch_1==10) 	// =10功能全开
// 		CCAP1H		=JGM_OUT_Z;	// 激光瞄PWM 中	
// 	else
// 		CCAP1H		=JGM_OUT_L;	// 激光瞄PWM 低		
// }
// /*==================================================================
// //********	程序名称：JGM_G()
// //********	程序功能：激光瞄PWM输出 高
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-21
// ==================================================================*/
// void	JGM_G()
// {
//  	PCA_PWM1	=0x80;					
// 	if(switch_1==10) 	// =10功能全开
// 		CCAP1H		=JGM_OUT_G;	// 激光瞄PWM 高	
// 	else
// 		CCAP1H		=JGM_OUT_L;	// 激光瞄PWM 低				
// }
// /*==================================================================
// //********	程序名称：ZM_OFF()
// //********	程序功能：照明PWM输出 关闭
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-21
// ==================================================================*/
// void	ZM_OFF()
// {
//  	PCA_PWM0	=0x83;			// 关闭 照明PWM输出
// 	CCAP0H		=0Xff;
// 	CCAP0L		=0Xff;	
// 	//PCA_PWM1	=0x80;			// 关闭 照明PWM输出
// 	//CCAP1H		=0X00;
// 	//CCAP1L		=0X00;				
// }
// /*==================================================================
// //********	程序名称：ZM_D()
// //********	程序功能：照明PWM输出 低
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-21
// ==================================================================*/
// void	ZM_D()
// {
//  	PCA_PWM0	=0x80;				
// 	CCAP0L		=0Xff;
// 	CCAP0H		=ZM_OUT_L;	// 照明PWM输出 低				
// }
// /*==================================================================
// //********	程序名称：JGM_Z()
// //********	程序功能：照明PWM输出 中
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-21
// ==================================================================*/
// void	ZM_Z()
// {
//  	PCA_PWM0	=0x80;				

// 	if(switch_1==10) 	// =10功能全开
// 		CCAP0H		=ZM_OUT_Z;	// 照明PWM输出 中
// 	else
// 		CCAP0H		=ZM_OUT_L;	// 照明PWM输出 低			
// }
// /*==================================================================
// //********	程序名称：JGM_G()
// //********	程序功能：照明PWM输出 高
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-21
// ==================================================================*/
// void	ZM_G()
// {
//  	PCA_PWM0	=0x80;				

// 	if(switch_1==10) 	// =10功能全开
// 		CCAP0H		=ZM_OUT_G;	// 照明PWM输出 高
// 	else
// 		CCAP0H		=ZM_OUT_L;	// 照明PWM输出 低				
// }

// /*==================================================================
// //********	程序名称：program_state_disposal()
// //********	程序功能：程序状态处理程序
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-21
// ==================================================================*/
// void	program_state_disposal()
// {
// 	uchar	DWKG1;			// 档位开关1状态=0 OFF，=1照明低，=2照明中，=3照明高	
// 	uchar	DWKG2;			// 档位开关2状态=0 OFF，=1激光瞄低，=2激光瞄中，=3激光瞄高，=4绿

// 	if(ZMKG_D==0)			// 档位开关1 = 照明低 有效
// 		DWKG1=1;
// 	else if(ZMKG_Z==0) 		// 档位开关1 = 照明中 有效
// 		DWKG1=2;
// 	else if(ZMKG_G==0) 		// 档位开关1 = 照明高 有效
// 		DWKG1=3;
// 	else					// 档位开关1 = off
// 		DWKG1=0;

// 	if(GreenKG==0)			// 档位开关2 = 绿 有效
// 		DWKG2=4;
// 	else if(JGMKG_D==0)		// 档位开关2 = 激光瞄低 有效
// 	   	DWKG2=1;
// 	else if(JGMKG_Z==0)		// 档位开关2 = 激光瞄中 有效
// 	   	DWKG2=2;
// 	else if(JGMKG_G==0)		// 档位开关2 = 激光瞄高 有效
// 	  	DWKG2=3;
// 	else					// 档位开关2 = off
// 		DWKG2=0;

// 	Delay(100);	// 延时0.5s	

// //DWKG1=1;
// //DWKG2=0;
// //work_ON_OFF=1;	



// 	switch (DWKG1)
// 	{

// 		case 0:				// 档位开关1 OFF
// 			switch (DWKG2)
// 			{
// 				case 0:		// 档位开关2 = off

// 					JGM_OFF();			// 激光瞄PWM输出 关闭
// 					ZM_OFF();			// 照明PWM输出 关闭
// 					Led_ON=0;			// 指示灯全灭
// 					work_ON_OFF=0;
// 					//if(GreenJG_OUT_EN==0)// 不维持现状
// 					//{
// 						GreenJG_OUT_EN=0;
// 						GreenJG_OUT=1;	// 绿激光 关闭
// 						Red_LED=1;
// 						Green_LED=1;
// 						PCON	=PD;			//MCU进入掉电模式
// 					//}


// 					OFF_DW=1;
// 					break;
// 				case 1:	  	// 档位开关2 = 激光瞄低 
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_D();		// 激光瞄PWM 低
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					OFF_DW=0;
// 					break;
// 				case 2:		// 档位开关2 = 激光瞄中
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_Z();		// 激光瞄PWM 中
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					OFF_DW=0;
// 					break;
// 				case 3:		// 档位开关2 = 激光瞄高
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_G();		// 激光瞄PWM 高
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭	
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					OFF_DW=0;
// 					break;
// 				case 4:		// 档位开关2 = 绿
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=4;		// 绿灯闪
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						GreenJG_OUT=0;			// 绿激光 开启	
// 					}
// 					else
// 					{
// 						Led_ON=2;		// 绿灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					OFF_DW=0;
// 					break;
// 				default:
// 					break;
// 			}
// 			break;
// 		case 1:	 			// 档位开关1 = 照明低
// 			OFF_DW=0;
// 			switch (DWKG2)
// 			{
// 				case 0:		// 档位开关2 = off
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_D();			// 照明PWM输出 低
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭	
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭	
// 					}

// 					break;
// 				case 1:	  	// 档位开关2 = 激光瞄低 
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_D();		// 激光瞄PWM 低
// 						ZM_D();			// 照明PWM输出 低
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					break;
// 				case 2:		// 档位开关2 = 激光瞄中
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_Z();		// 激光瞄PWM 中
// 						ZM_D();			// 照明PWM输出 低
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					break;
// 				case 3:		// 档位开关2 = 激光瞄高
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_G();		// 激光瞄PWM 高
// 						ZM_D();			// 照明PWM输出 低
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					break;
// 				case 4:		// 档位开关2 = 绿
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_D();			// 照明PWM输出 低
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					break;
// 				default:
// 					break;
// 			}
// 			break;
// 		case 2:	 			// 档位开关1 = 照明中
// 			OFF_DW=0;
// 			switch (DWKG2)
// 			{
// 				case 0:		// 档位开关2 = off
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_Z();			// 照明PWM输出 
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭	
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}

// 					break;
// 				case 1:	  	// 档位开关2 = 激光瞄低 
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_D();		// 激光瞄PWM 低
// 						ZM_Z();			// 照明PWM输出 中
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					break;
// 				case 2:		// 档位开关2 = 激光瞄中
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_Z();		// 激光瞄PWM 中
// 						ZM_Z();			// 照明PWM输出 中
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭	
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					break;
// 				case 3:		// 档位开关2 = 激光瞄高
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_G();		// 激光瞄PWM 高
// 						ZM_Z();			// 照明PWM输出 中
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					break;
// 				case 4:		// 档位开关2 = 绿
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_Z();			// 照明PWM输出 中
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					break;
// 				default:
// 					break;
// 			}		
// 			break;
// 		case 3:				// 档位开关1 = 照明高
// 			OFF_DW=0;
// 			switch (DWKG2)
// 			{
// 				case 0:		// 档位开关2 = off
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_G();			// 照明PWM输出 高
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}

// 					break;
// 				case 1:	  	// 档位开关2 = 激光瞄低 
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_D();		// 激光瞄PWM 低
// 						ZM_G();			// 照明PWM输出 高
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭	
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					break;
// 				case 2:		// 档位开关2 = 激光瞄中
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_Z();		// 激光瞄PWM 中
// 						ZM_G();			// 照明PWM输出 高
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					break;
// 				case 3:		// 档位开关2 = 激光瞄高
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_G();		// 激光瞄PWM 高
// 						ZM_G();			// 照明PWM输出 高
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭	
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					break;
// 				case 4:		// 档位开关2 = 绿
// 					if(work_ON_OFF==1)	// 工作状态
// 					{
// 						Led_ON=3;		// 红灯闪
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_G();			// 照明PWM输出 高
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}
// 					else
// 					{
// 						Led_ON=1;		// 红灯常亮
// 						JGM_OFF();		// 激光瞄PWM 关闭
// 						ZM_OFF();		// 照明PWM输出 关闭
// 						if(GreenJG_OUT_EN==0)// 不维持现状
// 							GreenJG_OUT=1;	// 绿激光 关闭
// 					}		
// 					break;
// 				default:
// 					break;
// 			}		
// 			break;
// 		default:
// 			break;
// 	}
// }


// /*==================================================================
// //********	程序名称：key1_disposal()
// //********	程序功能：鼠尾开关按键1处理程序
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-22
// ==================================================================*/
// void	key1_disposal()
// {
// 	if(key1_PressCount>=1 && key1_GN==0 )		// 鼠尾按键K2，按下1次处理
// 	{
// 		if(key_time>=5)	//  大于0.5s			
// 		{
// 			if (KEY_1==0)						// 一直按下处理，KEY2(鼠尾按键K2，按下时间>=0.5s且没有释放，)
// 			{
// 				//GreenJG_OUT_EN=1;
// 				//GreenJG_OUT=0;	// 绿激光开启
// 				key1_GN=3;
// 			}
// 			else
// 				key1_GN=1;						// 短按单击处理，KEY2(鼠尾按键K2，按下时间>=0.5s且已释放)
// 		}
// 	}
// /*	else if(key1_PressCount>=2 && key1_GN==0 )		// 鼠尾按键K2，双击处理	
// 	{
// 	 	if(key_time<=6)				// 300ms内按键按下2次以上
// 		{
// 		 	key1_GN=2;
// 		}
// 		else
// 		{
// 			key1_PressCount=0;
// 			key1_GN=0;
// 		}
// 	}
// */

// /*	if((key_time<=6) && (key1_PressCount>=2))	//  小于0.3s
// 	{
// 		//GreenJG_OUT=!GreenJG_OUT;
// 		key1_GN=2;	// 双击处理
// 		//key1_PressCount=0;
// 	}	
// 	else if((key_time>=6) && (key1_PressCount==1))	//  大于0.3s
// 	{
// 		if(KEY_1==1)
// 			key1_GN=1;	// 短按单击
// 		else
// 			key1_GN=3;	// 一直按下处理
// 	}
// 	else
// 		key1_GN=0;
// */


// //====== 	鼠尾按键K1功能处理程序段    ======
// 	switch	(key1_GN)
// 	{
// 		case 0:
// 			break;
// 		case 1:	 // 单击处理

// 			//GreenJG_OUT_EN=0;
// 			//GreenJG_OUT=1;	// 绿激光关闭

// 			if(GreenJG_OUT==1)	// 绿激光关闭
// 			{
// 				GreenJG_OUT_EN=1;
// 				GreenJG_OUT=0;	// 绿激光关闭
// 			}
// 			else
// 			{
// 			 	GreenJG_OUT_EN=0;
// 				GreenJG_OUT=1;	// 绿激光关闭
// 			}

// 			key1_PressCount=0; 	// 重新检测按键功能
// 			key1_GN=0;
// 			break;
// 		case 2:	// 双击处理	
// 			//if(GreenJG_OUT==1)	// 绿激光关闭
// 			//{
// 				//GreenJG_OUT_EN=1;
// 				//GreenJG_OUT=0;	// 绿激光开启
// 			//}
// 			//else
// 			//{
// 			 	//GreenJG_OUT_EN=0;
// 				//GreenJG_OUT=1;	// 绿激光关闭
// 			//}

// 			key1_PressCount=0;	// 重新检测按键功能
// 			key1_GN=0;
// 			break;
// 		case 3:	// 长按处理
// 			if(KEY_1==0) 	// 鼠尾开关1按下状态
// 			{
// 				GreenJG_OUT_EN=1;
// 				GreenJG_OUT=0;	// 绿激光开启
// 			}
// 			else
// 			{
// 				GreenJG_OUT_EN=0;
// 				GreenJG_OUT=1;	// 绿激光关闭
// 				key1_PressCount=0;	// 重新检测按键功能
// 				key1_GN=0;
// 			}

// 			break;
// 		default:
// 			break;
// 	}

// }

// /*==================================================================
// //********	程序名称：key2_disposal()
// //********	程序功能：鼠尾开关按键2处理程序
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-22
// ==================================================================*/
// void	key2_disposal()
// {
// 	//if((L_KEY==0 || R_KEY==0) && key_assoil==0)
// 	if(key2_PressCount==1 && key2_GN==0 )		// 鼠尾按键K2，按下1次处理
// 	{
// 		if(key_time>=5)	//  大于0.5s			
// 		{
// 			if (KEY_2==0)						// 一直按下处理，KEY2(鼠尾按键K2，按下时间>=0.5s且没有释放，)
// 				key2_GN=3;
// 			else
// 				key2_GN=1;						// 短按单击处理，KEY2(鼠尾按键K2，按下时间>=0.5s且已释放)
// 		}
// 	}
// /*	else if(key2_PressCount>=2 && key2_GN==0 )		// 鼠尾按键K2，双击处理	
// 	{
// 	 	if(key_time<=6)				// 300ms内按键按下2次以上
// 		{
// 		 	key2_GN=2;
// 		}
// 		else
// 		{
// 			key2_PressCount=0;
// 			key2_GN=0;
// 		}
// 	}
// */
// //====== 	鼠尾按键K2功能处理程序段    ======
// 	switch	(key2_GN)
// 	{
// 		case 0:
// 			break;
// 		case 1:	 // 单击处理
// 			//work_ON_OFF=0;	// 工作状态开关 =0待机状态，=1工作状态
// 			//work_ON_OFF=!work_ON_OFF;	// 工作状态开关 =0待机状态，=1工作状态
// 			if(work_ON_OFF==1)	// 绿激光关闭
// 			{
// 				work_ON_OFF=0;	// 绿激光关闭
// 			}
// 			else
// 			{
// 				work_ON_OFF=1;	// 绿激光关闭
// 			}


// 			key2_PressCount=0; 	// 重新检测按键功能
// 			key2_GN=0;
// 			break;
// 		case 2:	// 双击处理
// //Green_LED=!Green_LED;
// //Red_LED=!Red_LED;
// 			//work_ON_OFF=!work_ON_OFF;	// 工作状态开关 =0待机状态，=1工作状态
// 			//work_ON_OFF=1;	// 工作状态开关 =0待机状态，=1工作状态

// 			key2_PressCount=0;	// 重新检测按键功能
// 			key2_GN=0;
// 			break;
// 		case 3:	// 长按处理
// 			if(KEY_2==0) 	// 鼠尾开关2按下状态
// 			{
// 				work_ON_OFF=1;	// 工作状态开关 =0待机状态，=1工作状态
// 			}
// 			else
// 			{
// 				work_ON_OFF=0;	// 工作状态开关 =0待机状态，=1工作状态

// 				key2_PressCount=0;	// 重新检测按键功能
// 				key2_GN=0;
// 			}
// 			break;
// 		default:
// 			break;
// 	}	
// }
// /*==================================================================
// //********	程序名称：key3_disposal()
// //********	程序功能：开关按键K3处理程序
// //********	入口参数：
// //********	出口参数：
// //********	编写者：ji				日期：2025-07-22
// ==================================================================*/
// void	key3_disposal()
// {
// 	//if((L_KEY==0 || R_KEY==0) && key_assoil==0)
// 	if(key3_PressCount==1 && key3_GN==0 )		// 鼠尾按键K3，按下1次处理
// 	{
// 		if(key_time>=5)	//  大于0.5s			
// 		{
// 			if (KEY_3==0)						// 一直按下处理，KEY3(鼠尾按键K2，按下时间>=0.5s且没有释放，)
// 				key3_GN=3;
// 			else
// 				key3_GN=1;						// 短按单击处理，KEY3(鼠尾按键K2，按下时间>=0.5s且已释放)
// 		}
// 	}
// /*	else if(key3_PressCount>=2 && key3_GN==0 )		// 鼠尾按键K3，双击处理	
// 	{
// 	 	if(key_time<=6)				// 300ms内按键按下2次以上
// 		{
// 		 	key3_GN=2;
// 		}
// 		else
// 		{
// 			key3_PressCount=0;
// 			key3_GN=0;
// 		}
// 	}
// */
// //====== 	鼠尾按键K3功能处理程序段    ======
// 	switch	(key3_GN)
// 	{
// 		case 0:
// 			break;
// 		case 1:	 // 单击处理
// 			//work_ON_OFF=0;	// 工作状态开关 =0待机状态，=1工作状态
// 			//work_ON_OFF=!work_ON_OFF;	// 工作状态开关 =0待机状态，=1工作状态
// 			if(work_ON_OFF==1)	// 绿激光关闭
// 			{
// 				work_ON_OFF=0;	// 绿激光关闭
// 			}
// 			else
// 			{
// 				work_ON_OFF=1;	// 绿激光关闭
// 			}

// 			key3_PressCount=0; 	// 重新检测按键功能
// 			key3_GN=0;
// 			break;
// 		case 2:	// 双击处理
// //Green_LED=!Green_LED;
// //Red_LED=!Red_LED;
// 			//work_ON_OFF=!work_ON_OFF;	// 工作状态开关 =0待机状态，=1工作状态
// 			//work_ON_OFF=1;	// 工作状态开关 =0待机状态，=1工作状态

// 			key3_PressCount=0;	// 重新检测按键功能
// 			key3_GN=0;
// 			break;
// 		case 3:	// 长按处理
// 			if(KEY_3==0) 	// 鼠尾开关2按下状态
// 			{
// 				work_ON_OFF=1;	// 工作状态开关 =0待机状态，=1工作状态
// 			}
// 			else
// 			{
// 				work_ON_OFF=0;	// 工作状态开关 =0待机状态，=1工作状态

// 				key3_PressCount=0;	// 重新检测按键功能
// 				key3_GN=0;
// 			}
// 			break;
// 		default:
// 			break;
// 	}	
// }


// /*==================================================================
// //********	程序名称：void Delay(ulong timer)
// //********	程序功能：ms延时程序  timer是几就是几ms，时钟=11.0592MHz
// //********	入口参数：timer延时常数
// //********	出口参数：无
// //********	编写者：ji				日期：2010-08-28
// ==================================================================*/
// void Delay(ulong timer)//延时程序
// { 	
// 	ulong ii,jj;
//   	for(ii=0;ii<=timer;ii++)
// 	{
// 		for(jj=0;jj<=76;jj++);
// 	}
// }





